Yazılım geliştirme alanında “SOLID” prensipleri, nesne yönelimli programlama (OOP) alanında kodun daha anlaşılır, esnek ve sürdürülebilir olmasını sağlamak için kullanılan bir dizi tasarım prensibini ifade eder. “SOLID” akronimi, beş farklı prensibi temsil eder.
- Tek Sorumluluk Prensibi (SRP): Bir sınıfın ya da modülün sadece tek bir sorumluluğu olmalıdır. Yani bir sınıfın değişmesi gereken tek bir nedeni olmalıdır.
- Açık/Kapalı Prensibi (OCP): Yazılım birimleri (sınıflar, modüller, fonksiyonlar vb.), değişikliklere kapalı ancak yeni işlevselliği eklemek için açık olmalıdır. Yani mevcut kodu değiştirmek yerine, yeni kod eklenerek genişletilebilir olmalıdır.
- Liskov Yerine Geçme Prensibi (LSP): Alt sınıflar, üst sınıfların yerine geçebilmelidir. Yani bir üst sınıfın türetilmiş sınıfları, üst sınıfın yerine kullanıldığında programın davranışını değiştirmemelidir.
- Arayüz Ayırma Prensibi (ISP): Kullanıcılar, ihtiyaç duymadıkları yöntemleri uygulamamalıdır. Yani bir arayüz, kullanılacak sınıfın ihtiyaç duyduğu yöntemleri içermelidir, ancak gereksiz yöntemler içermemelidir.
- Bağımlılıkları Tersine Çevirme Prensibi (DIP): Yüksek seviyeli modüller, düşük seviyeli modüllere bağımlı olmamalıdır. Her iki seviye de soyutlamalara (interface’lere veya soyut sınıflara) bağımlı olmalıdır.
Bu prensipler, yazılım geliştiricilerin kodlarını daha okunabilir, esnek ve sürdürülebilir hale getirmelerine yardımcı olur.
Örnekler ile açıklayacak olursak:
- Tek Sorumluluk Prensibi (SRP): Bir
Arabasınıfı düşünelim. Bu sınıf sadece araba özelliklerini ve davranışlarını içermelidir. Örneğin, hızlanma, frenleme, dönüş yapma gibi işlevler bu sınıf içinde olmalıdır. Ancak, bu sınıfın aynı zamanda arabanın rengini veya modelini tutması gerekmeyebilir. - Açık/Kapalı Prensibi (OCP): Bir
Şekilsınıfı ve bu sınıfa bağlıDikdörtgenveKarealt sınıflarını düşünelim. Kodumuzu, yeni bir şekil eklemeye açık ancak mevcut şekillerin hesaplamasında değişiklik yapmamalıyız. - Liskov Yerine Geçme Prensibi (LSP): Yukarıdaki örneği devam ettirelim.
Dikdörtgensınıfı,Karesınıfının alt sınıfıdır, ancakKaresınıfı,Dikdörtgensınıfının özelliklerini veya davranışlarını bozmamalıdır. - Arayüz Ayırma Prensibi (ISP): Bir
Hayvanarayüzü düşünelim. Bu arayüz,KuşveKedigibi alt sınıflar için uygundur. Ancak,KuşsınıfınınUçveKedisınıfınınTırmalagibi farklı özelliklere sahip olması gerekmektedir. - Bağımlılıkları Tersine Çevirme Prensibi (DIP): Bir müzik çalar uygulaması düşünelim. Müzik çalar, farklı müzik kaynaklarına bağlı olmamalıdır. Bunun yerine, müzik çalar, bir arayüz üzerinden müzik kaynaklarına bağımlı olmalıdır. Bu sayede, yeni bir müzik kaynağı eklemek istediğimizde, sadece bu arayüzü uygulamamız yeterli olacaktır.



